scanf多值输入问题

您所在的位置:网站首页 gitee 自荐 scanf多值输入问题

scanf多值输入问题

#scanf多值输入问题| 来源: 网络整理| 查看: 265

有一个很严重的错误,你输入字符数组的两个 scanf("%d %s %c %c",&person[i].num,&person[i].name,&person[i].sex,&person[i].job); scanf("%s",&person[i].category.position); 把这两行中字符数组输入时前面的&符号去掉,对字符数组输入本身就是地址,不要加& 改成这样 scanf("%d %s %c %c",&person[i].num,person[i].name,&person[i].sex,&person[i].job); scanf("%s",person[i].category.position);

其他的也没有什么错误 记着输入时候,那几个值之间用一个空格隔开

追问 person[i].num是结构体数组的成员,对成员进行赋值应该要加&吧?还有按照我这样写但从输出结果上看是正确的,不知道是否存在内在的隐患?我刚开始学习C语言,希望您能帮我升入讲解一下。

回答 用scanf()函数输入的时候,本质是,你给scanf一个地址,这个函数会根据你输入的地址把 输入缓冲区中的数据放在指定地址处

象int ,char,double,long,float这些基本类型,再分配空间的时候,只是给他们一个空间 所以用scanf()输入的时候,要加&取地址符号,才能给他们赋值 然而char *,char [],这些本身是一块区域的首地址,本身就是地址,所以用scanf时,不用加& 因此,你输入里面不需要加的只有,person[i].name,person[i].category.position两个,其他的都是基本类型,因此都需要加

追问 我明白了,像我原来写得可能在运行的时候没有问题,可是在内存中存储的person[i].category.position数据只是输入的字符串的首字符对吧?这个调试的过程中可以看到(今天刚学的调试程序)。 ———————————————— 版权声明:本文为CSDN博主「司徒伽澜」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/jobsss/article/details/7492747



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3